package com.example.toolproject.demo.mapper;

import com.example.toolproject.demo.domain.LoginPageMessage;
import com.example.toolproject.demo.domain.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import javax.print.attribute.IntegerSyntax;
import java.util.List;

/**
 * @ClassName UserMapper
 * @Description TODO    用户数据库操作
 * @Author lvyongwei
 * @Date 2020-06-18 16:45
 **/
@Mapper
public interface UserMapper {

    /**
     * 用户注册
     * @param user   用户实体
     * @return
     */
    public boolean insertUser(User user);

    /**
     * 用户登录
     * @param user   用户实体
     * @return
     */
    public User checkUser(User user);

    /**
     * 验证用户名是否存在
     * @param userName   用户名
     * @return
     */
    public User checkUserName(String userName);

    /**
     * 验证邮箱是否存在
     * @param mail   邮箱
     * @return
     */
    public User checkMail(String mail);

    /**
     * 修改密码
     * @param user  用户实体
     * @return
     */
    public boolean updatePassword(User user);

    /**
     * 查询所有用户信息
     * @return
     */
    public List<User> getAllUser();

    /**
     * 获取用户角色数量
     * @return
     */
    public LoginPageMessage getUserCount();

    /**
     * 游客登录插入一条游客信息
     * @param user
     * @return
     */
    public boolean insertTourists(User user);

    /**
     * 获取注册没有被审核的教师
     * @return
     */
    public List<User> getUserNoUse();

    /**
     * 删除用户
     * @param userId
     * @return
     */
    public boolean deleteUser(int userId);

    /**
     * 根据用户id查询用户
     * @param userId
     * @return
     */
    public User getUserById(int userId);


    /**
     * 搜索用户
     * @param message   搜索内容
     * @param roleId    角色id
     * @return
     */
    public List<User> getUserByMessage(@Param("message") String message,@Param("roleId") Integer roleId);

    /**
     * 审批注册的教师
     * @param list
     * @return
     */
    public boolean approve(@Param("list") List<String> list);

    /**
     * 获取省份对应的人数
     * @return
     */
    public List<User> getProvinceCount();

    /**
     * 获取所有的省份
     * @return
     */
    public List<String> getAllProvince();

    /**
     * 获取教师在所有省份的数量
     * @return
     */
    public List<Object> getTeacherProvince();

    /**
     * 获取学生所对应省份数量
     * @return
     */
    public List<Object> getStudentProvince();

    /**
     * 获取游客所对应省份数量
     * @return
     */
    public List<Object> getTouristProvince();
}

